Custom Annotations তৈরি এবং Configurer করা

Custom Annotations তৈরি - জ্যাকসন অ্যানোটেশন (Jackson Annotations) - Java Technologies

268

Jackson ব্যবহার করে JSON Serialization এবং Deserialization-এর জন্য আপনি Custom Annotations তৈরি করতে পারেন, যা JSON প্রক্রিয়াকরণকে আরও কাস্টমাইজড ও নিয়ন্ত্রিত করতে সহায়তা করে। Jackson এর custom annotations ব্যবহার করে আপনি নিজের প্রয়োজনীয় ফিল্ড ম্যানিপুলেশন, কাস্টম Serialization/Deserialization বা প্রক্রিয়া নিয়ন্ত্রণ করতে পারেন।

এই লেখায় আমরা Custom Annotations তৈরি এবং Configurer করার প্রক্রিয়া আলোচনা করব, যা Jackson JSON প্রক্রিয়াকরণের জন্য বিশেষভাবে তৈরি হবে।


Custom Annotations তৈরি এবং Jackson এ Configurer করা

Jackson এ Custom Annotations তৈরি করার জন্য সাধারণত আপনাকে একটি custom annotation তৈরি করতে হবে এবং তারপর ObjectMapper এর মাধ্যমে সেটি কনফিগার করতে হবে।

ধাপ ১: Custom Annotation তৈরি করা

Jackson এর @JsonSerialize, @JsonDeserialize এর মতো অ্যানোটেশন এর মতোই, আপনি আপনার প্রয়োজন অনুযায়ী একটি Custom Annotation তৈরি করতে পারেন।

Java Class Example:

import com.fasterxml.jackson.annotation.JacksonAnnotation;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface CustomJsonFormat {
    String value() default "default format";
}

এখানে, @CustomJsonFormat একটি কাস্টম অ্যানোটেশন যা একটি value ফিল্ড ধারণ করে। এই অ্যানোটেশনটি Jackson প্রক্রিয়ার জন্য তৈরি করা হয়েছে, তবে আমরা এটিকে কাস্টম ফিল্ড ফরম্যাটিং বা প্রক্রিয়া করতে ব্যবহার করতে পারব।


ধাপ ২: Custom Serializer তৈরি করা

Jackson-এ custom annotations প্রয়োগ করার জন্য, আপনাকে Custom Serializer তৈরি করতে হবে। এটি নির্দিষ্ট ফিল্ড বা ক্লাসের জন্য কাস্টম Serialization প্রক্রিয়া প্রয়োগ করবে।

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;

import java.io.IOException;

public class CustomJsonFormatSerializer extends StdSerializer<Object> {

    public CustomJsonFormatSerializer() {
        this(null);
    }

    public CustomJsonFormatSerializer(Class<Object> t) {
        super(t);
    }

    @Override
    public void serialize(Object value, JsonGenerator gen, SerializerProvider provider) throws IOException {
        // Custom JSON Formatting logic
        if (value instanceof String) {
            String formattedValue = ((String) value).toUpperCase(); // Example custom logic
            gen.writeString(formattedValue);
        } else {
            gen.writeObject(value);
        }
    }
}

এখানে, CustomJsonFormatSerializer একটি custom serializer তৈরি করেছে যা স্ট্রিং টাইপের ভ্যালুকে uppercase-এ রূপান্তর করবে।


ধাপ ৩: Custom Annotation প্রয়োগ করা

এখন, আপনার @CustomJsonFormat অ্যানোটেশনটি Jackson Serializer এর সাথে যুক্ত করতে হবে।

import com.fasterxml.jackson.databind.annotation.JsonSerialize;

public class User {
    private int id;
    
    @JsonSerialize(using = CustomJsonFormatSerializer.class)
    private String name;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

এখানে, @JsonSerialize(using = CustomJsonFormatSerializer.class) ব্যবহার করে আমরা name ফিল্ডের জন্য CustomJsonFormatSerializer Serializer অ্যাপ্লাই করেছি, যাতে এটি JSON এ serialization হওয়ার সময় custom ফরম্যাটিং করবে।


ধাপ ৪: ObjectMapper Configurer

Jackson-এর ObjectMapper-এ Custom Annotation এবং Custom Serializer কনফিগার করতে হবে যাতে Jackson অ্যানোটেশনটি সঠিকভাবে কাজ করে।

import com.fasterxml.jackson.databind.ObjectMapper;

public class CustomAnnotationExample {
    public static void main(String[] args) throws Exception {
        // Create User object
        User user = new User();
        user.setId(1);
        user.setName("rahim");

        // Configure ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(user);

        // Print formatted JSON
        System.out.println(json);  // Output: {"id":1,"name":"RAHIM"}
    }
}

Output:

{
  "id": 1,
  "name": "RAHIM"
}

এখানে, name ফিল্ডটি uppercase হয়ে সেরিয়ালাইজ হয়েছে কারণ আমাদের CustomJsonFormatSerializer সেটি প্রক্রিয়া করেছে।


Jackson Configurer এবং Custom Annotations এর ব্যবহার

  1. Custom Serializer: @JsonSerialize(using = CustomSerializer.class) ব্যবহার করে আপনি Jackson এর মাধ্যমে যে কোন ফিল্ডের জন্য কাস্টম ফরম্যাট প্রয়োগ করতে পারেন।
  2. Custom Deserializer: @JsonDeserialize(using = CustomDeserializer.class) ব্যবহার করে আপনি JSON থেকে Java Object-এ কাস্টম মাপ প্রয়োগ করতে পারেন।
  3. Dynamic Behavior: Custom annotations দিয়ে ডাইনামিক JSON ফিল্ড প্রসেসিং এবং নিয়ন্ত্রণ করা যায়।
  4. Consistency: JSON ফরম্যাটের সাথে Java Object এর consistency বজায় রাখতে কাস্টম অ্যানোটেশন ব্যবহার করা যায়।

  1. Custom Annotations Jackson-এ JSON প্রক্রিয়াকরণকে আরও কাস্টমাইজড করতে সহায়তা করে।
  2. Custom Serializer এবং Custom Deserializer তৈরি করে আপনি JSON ফিল্ডের নির্দিষ্ট আচরণ নিয়ন্ত্রণ করতে পারেন।
  3. Jackson ObjectMapper এর মাধ্যমে custom annotation এবং custom logic প্রয়োগ করে JSON প্রক্রিয়া আরও গতিশীল এবং নিয়ন্ত্রিত করা সম্ভব।
Content added || updated By
Promotion

Are you sure to start over?

Loading...